package cn.itcast.service.company.impl;

import cn.itcast.dao.company.CompanyDao;
import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import cn.itcast.vo.PageResult;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;


import java.util.List;
import java.util.UUID;

/**
 * 声明一个企业dubbo服务
 */
@Service
public class CompanyServiceImpl implements CompanyService {

	@Autowired
	private CompanyDao companyDao;

	@Override
	public List<Company> findAll() {
		return companyDao.findAll();
	}

	/**
	 * 保存企业
	 *   1.设置id（uuid）
	 *   2.调用dao保存
	 */
	public void save(Company company) {
		//1.设置id（uuid）
		String id = UUID.randomUUID().toString();
		company.setId(id);
		//2.调用dao保存
		companyDao.save(company);
	}

	/**
	 * 根据id查询
	 */
	public Company findById(String id) {
		return companyDao.findById(id);
	}

	//更新
	public void update(Company company) {
		companyDao.update(company);
	}

	//根据id删除
	public void delete(String id) {
		companyDao.delete(id);
	}

	/**
	 * 分页查询
	 */
	public PageResult findAll(int page, int size) {
		//总记录数 : 查询数据库（select count(*) from ss_company）
		long total = companyDao.findCount();
		//数据列表 : 分页查询数据列表  select * from ss_company limit 起始条数,每页查询条数
		int beg = (page-1) * size;
		List list = companyDao.findPage(beg,size);
		return new PageResult(total,list,page,size); //总记录数，数据列表，当前页，每条页数
	}

	/**
	 * PageHelper分页
	 *  1、设置分页参数 ：PageHelper.startPage(当前页，每页条数);
	 *  2、查询数据列表 ：查询全部（调用dao查询全部）
	 *  3、构造返回值PageInfo ： new PageInfo(列表);
	 * * 代码书写顺序：保证。1,2,3步骤
	 * * 插件自动的对设置分页参数后的，查询列表进行分页
	 */
	public PageInfo findAllHelper(int page, int size) {
		//1、设置分页参数
		PageHelper.startPage(page,size);
		//2、查询数据列表
		List<Company> list = companyDao.findAll();  //select * from table
		//3、构造返回值PageInfo
		return new PageInfo(list);
	}
}
